home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / Interfaces & Libraries / Interfaces / CIncludes / Serial.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-08  |  4.5 KB  |  178 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Serial.h
  3.  
  4.      Contains:    Serial port Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1.2 on ETO #20
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __SERIAL__
  21. #define __SERIAL__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32.  
  33. #if PRAGMA_ALIGN_SUPPORTED
  34. #pragma options align=mac68k
  35. #endif
  36.  
  37. #if PRAGMA_IMPORT_SUPPORTED
  38. #pragma import on
  39. #endif
  40.  
  41.  
  42. enum {
  43.     baud150                        = 763,
  44.     baud300                        = 380,
  45.     baud600                        = 189,
  46.     baud1200                    = 94,
  47.     baud1800                    = 62,
  48.     baud2400                    = 46,
  49.     baud3600                    = 30,
  50.     baud4800                    = 22,
  51.     baud7200                    = 14,
  52.     baud9600                    = 10,
  53.     baud14400                    = 6,
  54.     baud19200                    = 4,
  55.     baud28800                    = 2,
  56.     baud38400                    = 1,
  57.     baud57600                    = 0,
  58.     stop10                        = 16384,
  59.     stop15                        = -32768L,
  60.     stop20                        = -16384,
  61.     noParity                    = 0,
  62.     oddParity                    = 4096,
  63.     evenParity                    = 12288,
  64.     data5                        = 0,
  65.     data6                        = 2048,
  66.     data7                        = 1024,
  67.     data8                        = 3072
  68. };
  69.  
  70. enum {
  71.     aData                        = 6,                            /* channel A data in or out (historical) */
  72.     aCtl                        = 2,                            /* channel A control (historical) */
  73.     bData                        = 4,                            /* channel B data in or out (historical) */
  74.     bCtl                        = 0,                            /* channel B control (historical) */
  75.     ctsEvent                    = 32,                            /* flag for SerShk.errs and SerShk.evts */
  76.     breakEvent                    = 128,                            /* flag for SerShk.errs and SerShk.evts */
  77.     xOffWasSent                    = 128,                            /* flag for SerStaRec.xOffSent */
  78.     dtrNegated                    = 64,                            /* flag for SerStaRec.xOffSent */
  79.     ainRefNum                    = -6,                            /* serial port A input */
  80.     aoutRefNum                    = -7,                            /* serial port A output */
  81.     binRefNum                    = -8,                            /* serial port B input */
  82.     boutRefNum                    = -9,                            /* serial port B output */
  83.     swOverrunErr                = 1,                            /* serial driver error masks */
  84.     breakErr                    = 8,                            /* serial driver error masks */
  85.     parityErr                    = 16,                            /* serial driver error masks */
  86.     hwOverrunErr                = 32,                            /* serial driver error masks */
  87.     framingErr                    = 64,                            /* serial driver error masks */
  88.     kOptionClockX1CTS            = 64,                            /* option bit used with Control code 16 */
  89.     kOptionPreserveDTR            = 128                            /* option bit used with Control code 16 */
  90. };
  91.  
  92. enum {
  93.     sPortA,
  94.     sPortB
  95. };
  96.  
  97. typedef SInt8 SPortSel;
  98.  
  99. /* csCodes for serial driver Control routines */
  100.  
  101. enum {
  102.     serdReset                    = 8,
  103.     serdSetBuf                    = 9,
  104.     serdHShake                    = 10,
  105.     serdClrBrk                    = 11,
  106.     serdSetBrk                    = 12,
  107.     serdSetBaud                    = 13,
  108.     serdHShakeDTR                = 14,
  109.     serdSetMIDI                    = 15,
  110.     serdSetMisc                    = 16,
  111.     serdSetDTR                    = 17,
  112.     serdClrDTR                    = 18,
  113.     serdSetPEChar                = 19,
  114.     serdSetPECharAlternate        = 20,
  115.     serdSetXOff                    = 21,
  116.     serdClrXOff                    = 22,
  117.     serdSendXOnConditional        = 23,
  118.     serdSendXOn                    = 24,
  119.     serdSendXOffConditional        = 25,
  120.     serdSendXOff                = 26,
  121.     serdChannelReset            = 27,
  122.     serdSet230KBaud                = 'JF',                            /* set 230K baud data rate */
  123.     serdSetPollWrite            = 'jf',                            /* disable interrupt-driven transmit */
  124.     serdSetFlushCount            = 'FC'
  125. };
  126.  
  127. /* csCodes for serial driver Status routines */
  128. enum {
  129.     serdGetBuf                    = 2,
  130.     serdStatus                    = 8,
  131.     serdGetVers                    = 9,
  132.     serdGetVersSys                = 0x8000
  133. };
  134.  
  135. struct SerShk {
  136.     Byte                            fXOn;                        /*XOn flow control enabled flag*/
  137.     Byte                            fCTS;                        /*CTS flow control enabled flag*/
  138.     unsigned char                    xOn;                        /*XOn character*/
  139.     unsigned char                    xOff;                        /*XOff character*/
  140.     Byte                            errs;                        /*errors mask bits*/
  141.     Byte                            evts;                        /*event enable mask bits*/
  142.     Byte                            fInX;                        /*Input flow control enabled flag*/
  143.     Byte                            fDTR;                        /*DTR input flow control flag*/
  144. };
  145. typedef struct SerShk SerShk;
  146.  
  147. struct SerStaRec {
  148.     Byte                            cumErrs;
  149.     Byte                            xOffSent;
  150.     Byte                            rdPend;
  151.     Byte                            wrPend;
  152.     Byte                            ctsHold;
  153.     Byte                            xOffHold;
  154. };
  155. typedef struct SerStaRec SerStaRec;
  156.  
  157. extern pascal OSErr SerReset(short refNum, short serConfig);
  158. extern pascal OSErr SerSetBuf(short refNum, Ptr serBPtr, short serBLen);
  159. extern pascal OSErr SerHShake(short refNum, const SerShk *flags);
  160. extern pascal OSErr SerSetBrk(short refNum);
  161. extern pascal OSErr SerClrBrk(short refNum);
  162. extern pascal OSErr SerGetBuf(short refNum, long *count);
  163. extern pascal OSErr SerStatus(short refNum, SerStaRec *serSta);
  164.  
  165. #if PRAGMA_IMPORT_SUPPORTED
  166. #pragma import off
  167. #endif
  168.  
  169. #if PRAGMA_ALIGN_SUPPORTED
  170. #pragma options align=reset
  171. #endif
  172.  
  173. #ifdef __cplusplus
  174. }
  175. #endif
  176.  
  177. #endif /* __SERIAL__ */
  178.